﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>SwingInspector</TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<style type="text/css">
<!--
html {
	font-family: simsun;
	font-size: 14px;
}
.STYLE1 {color: #FF0000}
-->
</style>
</HEAD>
<BODY >
<P align=right><A href="./index.html">中文</A>|<A 
href="./index_en.html">English</A></P>
<P><STRONG>SwingInspector 1.2.3 for Mac OSX/Windows/Linux，兼容Java 1.6到1.8</STRONG></P>
<blockquote>SwingInspector是一个Java Swing/AWT用户界面分析和调试工具，功能与firebug类似，具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员。能够快速定位问题、UI快速调试及级分析基于Java Swing/AWT技术的软件界面的实现原理。能够给开发工作效率带来大幅提升。</blockquote>
<STRONG>关于SwingInspector 1.2.3</STRONG>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <OL >
    <LI>兼容java 1.8，全面支持java 1.6、1.7和1.8，包括32和64位。</LI>
    <LI>支持操作系统：Mac OSX: Intel架构，64位，Windows: 32和64位，Linux: 32和64位。</LI>
    <LI>解决了所有与第3方jar包冲突问题(如：swingx)。</LI>
  </OL>
</BLOCKQUOTE>
<STRONG>工具特点</STRONG>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <OL >
    <LI>具备UI组件联动功能，在用户界面中Ctrl+移动鼠标(Mac OSX ⌘+F12)，可以在SwingInspector主界面中显示对应组件信息，并高亮当前Component。</LI>
    <LI>可以在SwingInspector组件树中联动到用户界面，即双向联动，且<span class="STYLE1">不需要提供界面的源代码</span>。</LI>
    <LI>Applet支持，可以定位嵌入到任何网页中的applet界面。</LI>
    <LI>强大的window捕获功能，可以捕获加载agent的jvm创建的所有Swing/AWT窗口(网页中的applet，浏览器加载applet/webstart后启动的console窗口)，模式对话框等。</LI>
    <LI>绿色，无需安装，只需给java命令添加一行参数，即可启动SwingInspector。</LI>
    <LI>支持所有的AWT/Swing程序，netbeans、visualvm等。</LI>
    <LI>强大的表达式支持，允许对选定组进执行表达式运算，实时显示计算结果，运算结果支持属性浏览和编辑。</LI>
    <LI>强大的Javascript支持功能，支持用javascript实时修改用户界面中的组件，执行脚本后立即生效。</LI>
    <LI>Component对象创建记录功能，支持跟踪对象创建过程，并直接定位到代码行。</LI>
    <LI>界面组装记录功能，支持跟踪用户界面组装过程，并直接定位到代码行。</LI>
    <LI>高性能，核心功能采用c/c++实现，直接操纵jvm，对性能影响很小，主界面采用lazy机制，刷新组件时只更新可见viewer。属性编辑器可直接修改选定的组件属性，且直接生效。</LI> 
    <LI>可以记录组件添加到parent时的stacktrace，可以快速定位到相应的代码行。</LI>
    <LI>简单易用，快捷键与常用软件一致(F5刷新、Alt+Left后退，Alt+Right前进等)，界面非常简洁、直观，没有学习成本。</LI>
  </OL>
</BLOCKQUOTE>
<STRONG>下载</STRONG>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" > Windows: <A 
  href="download/swing-inspector-windows-1.2.3.zip">http://www.swinginspector.com/download/swing-inspector-windows-1.2.3.zip</A><BR>
		Mac OSX: <A 
  href="download/swing-inspector-macosx-1.2.3.dmg">http://www.swinginspector.com/download/swing-inspector-macosx-1.2.3.dmg<BR>
		</A>Linux: <A 
  href="download/swing-inspector-linux-1.2.3.tar.gz">http://www.swinginspector.com/download/swing-inspector-linux-1.2.3.tar.gz</A></BLOCKQUOTE>
<P ><STRONG>License</STRONG></P>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <P >SwingInspector完全免费，但禁止任何商业行为，没有经过我们同意，禁止以任何形式出售本软件。禁止将本软件捆绑到公司产品中进行销售，否则将追究法律责任。</P>
</BLOCKQUOTE>
<P ><STRONG>SwingInspector组成</STRONG></P>

<OL >
  		<LI> agent工具核心部分，采用C/C++编写，注入到jvm进程，监视jvm各项动作，搜集相关数据，如：jvm启动/关闭、jvm方法调用、jvm内存分配、高亮区域绘制、jvm异常拦截、全局快捷键绑定、Add 
  				StackTrace记录、对象创建StackTrace记录、SwingInspector界面通信及jni接口实现等。
  		<LI> SwingInspector主界面，采用Java 
  				Swing编写，分析agent搜集的数据，以图形界面形式展示，如：Component 
  				Tree、提供Properties、Expressions、Javascript等视图，界面快捷键绑定等，并调用agent中的jni完成相关底层操作。</LI>
</OL>
  <P ><STRONG>截图</STRONG>  </P>
<blockquote>
		<blockquote><a href="snapshot/windows.png"><img src="snapshot/main.png" width="1024" height="607" border="0"></a></blockquote>
</blockquote>
	<blockquote><blockquote><p><a href="snapshot/mac.png"><IMG 
  src="snapshot/mac-min.png" width="1024" height="640" hspace=0 border=0></a></p>
				<p><a href="snapshot/ubuntu.png"><IMG 
  src="snapshot/ubuntu-min.png" width="1024" height="572" hspace=0 border=0></a></p>
			</blockquote>
	</blockquote>
	<P ><STRONG>主要功能如下：</STRONG></P>
</SPAN>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <P>1. 快速定位界面元素(Ctrl+鼠标移动)  		</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  		<P><IMG src="image/7206512.png" width="1024" height="661"></P>
  </BLOCKQUOTE>
  
  		2. 实时修改组件属性(目前版本支持简单属性，如：字符，数字，boolean)
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/18159421.jpg" width="1021" height="644"></P>
  </BLOCKQUOTE>
  <P>3. 修改组件首选大小</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/18315999.png" width="1024" height="485"></P>
  </BLOCKQUOTE>
  <P>4. 强大的表达式支持，可以在计算结果修改对应组件的属性</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/19669495.png" width="891" height="644"></P>
  </BLOCKQUOTE>
  <P>5. 强大javascript支持，实时操作界面元素</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/19452419.png" width="1102" height="644"></P>
    </BLOCKQUOTE>
  <P>6. Component对象创建记录和代码定位功能</P>
  <P align="left"><img src="image/create-stacktrace.png" width="1070" height="642" hspace="42"> </P>
  <P>7. 界面组装信息记录功能(想知道组件是什么时候添加到parent的吗？那就看看Add StackTrace吧)</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/20539388.png" width="1024" height="590"></P>
  </BLOCKQUOTE>
  <P>8. 其他功能</P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P ><IMG src="image/25929908.png" width="845" height="600"></P>
  </BLOCKQUOTE>
</BLOCKQUOTE>
<SPAN style="FONT-SIZE: 11pt"> <STRONG>环境要求</STRONG></SPAN>
<OL>
  		<LI>操作系统：Mac OSX 10.6或更高, Linux, windows 
  				XP, 2000, 2003, vista, Windows 7, Windows 8。 
		<LI>jvm: sun(oracle) java 1.6.x、1.7.x，ibm java 1.6.x和1.7.x，openjdk 1.6.x及更高，其他厂商jvm 
		未做过测试。</LI>
</OL>
  <SPAN style="FONT-SIZE: 11pt"> <STRONG>使用方法</STRONG></SPAN>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
		<P style="MARGIN-RIGHT: 0px" ><strong>1. 
    命令行</strong>(路径写全不要有空格，如果必须有请加双引号)</P>
  <span style="FONT-SIZE: 11pt"> </span>
  <P><strong>Windows</strong>(x64)</P>
  <blockquote>
  		<p>java -agentpath:C:\swing-inspector-windows-1.2.3\<span class="STYLE1">x64</span>\swing-inspector-agent.dll -classpath xxx.jar   				xxx.xxx.Main(自己的入口类)</p>
  		</blockquote>
  <P><strong>Windows</strong>(32bit)</P>
  <blockquote>
			<p>java -agentpath:C:\swing-inspector-windows-1.2.3\<span class="STYLE1">Win32</span>\swing-inspector-agent.dll -classpath xxx.jar   				xxx.xxx.Main</p>
  		</blockquote>
  <P><strong>Mac OSX</strong>(64bit)</P>
  <blockquote>
			<p>java -agentpath:/Volumes/SwingInspector_1.2.3/libswing-inspector-agent.dylib -classpath SwingSet2.jar SwingSet2</p>
  		</blockquote>
  <P><strong></strong><strong>Linux</strong>(amd64)</P>
  <blockquote>
			<p>java -agentpath:/home/manlge/swing-inspector_1.2.3/<span class="STYLE1">amd64</span>/libswing-inspector-agent.so -classpath xxx.jar xxx.xxx.Main</p>
  		</blockquote>
  <P><strong>Linux</strong>(32bit)</P>
  <blockquote>
			<p>java -agentpath:/home/manlge/swing-inspector_1.2.3/<span class="STYLE1">i386</span>/libswing-inspector-agent.so -classpath xxx.jar xxx.xxx.Main</p>
  		</blockquote>
  <P><strong>示例</strong></P>
  <blockquote>
  		<p>Windows	</p>
  		<blockquote>
  				<p>java 
  						-agentpath:C:\SwingInspector\swing-inspector-agent.dll 
  						-classpath C:\SwingSet2.jar 
  						SwingSet2</p>
  				</blockquote>
  		<p>Mac OSX </p>
  		<blockquote>
  				<p>java -agentpath:/Volumes/SwingInspector_1.2.3/libswing-inspector-agent.dylib -classpath SwingSet2.jar SwingSet2</p>
  				</blockquote>
  		<p>Linux</p>
  		<blockquote>
  				<p>java -agentpath:/home/manlge/swing-inspector/amd64/libswing-inspector-agent.so -classpath SwingSet2.jar SwingSet2</p>
  				</blockquote>
  </blockquote>
  <P><strong>路径中有空格示例(加双引号)</strong></P>
  <blockquote>
    <p><span style="FONT-SIZE: 11pt">java &quot;-agentpath:C:\Swing 
        Inspector\Win32\swing-inspector-agent.dll&quot; -classpath SwingSet2.jar 
        SwingSet2</span></p>
  </blockquote>
  
  <P><strong>2. applet</strong></P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/5122526.png" width="676" height="325"></P>
  </BLOCKQUOTE>
  <P><strong>3. Eclipse开发swing应用中使用</strong></P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P><IMG src="image/136186657.png" width="819" height="372"></P>
  </BLOCKQUOTE>
  <P><strong>4. jvislualvm</strong></P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P>jvisualvm.exe 
      -J-agentpath:C:\swing-inspector-agent\x64\Release\swing-inspector-agent.dll<BR>
    </P>
  </BLOCKQUOTE>
  <P><strong>5. netbeans</strong></P>
  <BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
    <P>netbeans64.exe --locale en_US 
      -J-agentpath:C:\swing-inspector-agent\x64\Release\swing-inspector-agent.dll</P>
    <P><IMG 
  src="image/netbeans.png" width="1088" height="663" hspace=0 border=0></P>
  </BLOCKQUOTE>
</BLOCKQUOTE>

<P style="MARGIN-RIGHT: 0px" ><STRONG>系统快捷键</STRONG></P>
<div style="padding-left:50px" align="left"><table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
	<td width="31%"><strong>快捷键</strong></td>
	<td><strong>描述</strong></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+F12(Mac OSX ⌘+F12)</span></td>
	<td><span style="MARGIN-RIGHT: 0px">显示/隐藏SwingInspector主界面(操作系统全局快捷键)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+鼠标移动(Mac OSX ⌘+鼠标移动)</span></td>
	<td><span style="MARGIN-RIGHT: 0px">捕获用户界面中鼠标位置组件</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">F5</span></td>
	<td><span style="MARGIN-RIGHT: 0px">刷新组件树</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+F</span></td>
	<td><span style="MARGIN-RIGHT: 0px">查找</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Alt+←</span></td>
	<td><span style="MARGIN-RIGHT: 0px">后退</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Alt+→</span></td>
	<td><span style="MARGIN-RIGHT: 0px">前进</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+-</span></td>
	<td><span style="MARGIN-RIGHT: 0px">降低窗口透明度</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl++</span></td>
	<td><span style="MARGIN-RIGHT: 0px">增加窗口透明度</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+P</span></td>
	<td><span style="MARGIN-RIGHT: 0px">显示属性页</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+E</span></td>
	<td><span style="MARGIN-RIGHT: 0px">显示表达式页</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+J</span></td>
	<td><span style="MARGIN-RIGHT: 0px">显示Javascript脚本页</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+A</span></td>
	<td><span style="MARGIN-RIGHT: 0px">显示Add 
	StackTrace页</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">F11</span></td>
	<td><span style="MARGIN-RIGHT: 0px">执行javascript(在javascript页处于活动时有效)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Alt+←</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component左移1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Alt+→</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component右移1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Alt+↑</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component上移1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Alt+↓</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component下移1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+Alt+←</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component宽度减小1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+Alt+→</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component宽度增加1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+Alt+↑</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component高度减小1个像素(大写键按下时5个像素)</span></td>
  </tr>
  <tr>
	<td><span style="MARGIN-RIGHT: 0px">Ctrl+Shift+Alt+↓</span></td>
	<td><span style="MARGIN-RIGHT: 0px">对选定的Component高度增加1个像素(大写键按下时5个像素)</span></td>
  </tr>
</table>
</div>
<P style="MARGIN-RIGHT: 0px"><STRONG>联系我们</STRONG></P>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <P>如果您对SwingInspector有好改进建议，请与我们联系<BR>
    mail: <A 
  href="mailto:swinginspector@gmail.com">swinginspector@gmail.com</A><BR>
    电话：18611739701 <BR>
    QQ：418850890(曼灵格)<BR>
    微信：418850890/18611739701<BR>
    联系人：Mark Liu/刘永伟<BR>
    <A 
  href="http://www.swinginspector.com/">http://www.swinginspector.com/</A> <BR>
    地址：北京市朝阳区北苑家园紫绶园6号楼</P>
</BLOCKQUOTE>
<P style="MARGIN-RIGHT: 0px"><STRONG>其他</STRONG></P>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <P style="MARGIN-RIGHT: 0px">如果SwingInspector给你们公司或个人节省了成本、带来了一定的经济效益，希望您能为SwingInspector的发展给予一定的资助，以推动SwingInspector更好的发展。联系电话：18611739701</P>
</BLOCKQUOTE>
<P ><STRONG>后续开发计划</STRONG></P>
<BLOCKQUOTE style="MARGIN-RIGHT: 0px" >
  <P >1.2.2</P>
  
    <OL >
    		<ol>
    				<li> 窗口位置和加载保存功能 各类组件的编辑器实现，Border，颜色 右击不同组件显示该类组件的可操作菜单 首选项对话框，允许对SwingInspector进行配置，启用声音等 </li>
    				<li> 属性编辑器支持过滤功能(隐藏final、隐藏static等)</li>
   				</ol>
    </OL>
    <P >1.2.3</P>
	<ol>
			<ol>
					<li> 允许当前脚本另存为、载入脚本、自动保存加载最后保存的脚本 允许当前表达式另存为、载入表达式。 script编辑器variable视图，显示上下文中的变量。 脚本编辑器语法高亮、代码完成功能。 </li>
					<li> 表达式支持以对话框型式编辑，表达式较长时，在表格中输入不方便。<BR>
							&nbsp;&nbsp;&nbsp;&nbsp;</li>
			</ol>
	</ol>
  	<P >1.2.4</P>
    <OL>
    		<ol>
    				<li> 设置(显示完整包名，状态栏，向console输出stacktrace) 拦截对象创建，并记录stacktrace，在需要时，在stacktrace 视图中显示(通过参数设置) 组件树中显示变量名 Creating StackViewer </li>
    				<li> 属性浏览器显示可以调用的方法</li>
   				</ol>
    </OL>
    <P >1.2.5</P>
    <OL>
    		<ol>
    				<li> 国际化，多语言支持(目前界面只有英文) LookAndFeel，提供多套漂亮的皮肤供选择 agent Ctrl+F12改成钩子实现 </li>
    				<li> 浮动View(类eclipse view)</li>
   				</ol>
    </OL>
    <P>1.3.0</P>
    <OL>
    		<ol>
    				<li>agent端移植到非windows系统linux、macosx、unix(bsd及Solaris等) 
    						性能调优(方法调用时间、网络请求和相应时间及数据查看) </li>
    				<li>逆向代码生成，根据选定的界面生成源代码(其他软件界面设计的很好，想拿过来直接用吗？^_^)</li>
   				</ol>
    </OL>
</BLOCKQUOTE>

</BODY>
</HTML>
